package com.sprouting.personal.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sprouting.personal.model.entity.BillingGroup;
import com.sprouting.personal.model.vo.BillUsage;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 账单组
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2022/12/27 9:37
 */
public interface BillingGroupDao extends BaseMapper<BillingGroup> {

    /**
     * 根据名称查询账单组
     * @param id 主键，传则忽略
     * @param userId 当前用户ID
     * @param name 账单组名称
     * @return
     */
    BillingGroup getBillingGroupByName(@Param("id") String id, @Param("userId") String userId, @Param("name") String name);

    /**
     * 分页查询账单组
     * @param page 分页参数
     * @param name 查询参数，账单组名称,非必填
     * @param userId 当前用户ID
     * @param viewInfo 是否展示
     * @return
     */
    Page<BillingGroup> getBillingGroupPageList(@Param("page") Page page, @Param("name") String name, @Param("userId") String userId, @Param("viewInfo") String viewInfo);

    /**
     * 根据主键批量查询账单组
     * @param groupIdList 主键
     * @return
     */
    List<BillingGroup> getBillingGroupByIdList(List<String> groupIdList);

    /**
     * 不分页查询全部的账单组
     * @return
     */
    List<BillingGroup> getBillingGroupList(String userId);

    /**
     * 获取账单组支出情况统计
     * @param billGroupId 账单组ID
     * @return
     */
    BillUsage getGroupExpenditureInfo(String billGroupId);

    /**
     * 获取账单组支出情况统计（含不入账的账单）
     * @param billGroupId 账单组id
     * @return
     */
    BillUsage getGroupExpenditureInfoEntry(String billGroupId);
}
